// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.*;
// import com.alibaba.druid.sql.dialect.hive.visitor.HiveASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../../../ast/statement/SQLInsertInto.h"

class HiveInsert : virtual public SQLInsertInto
{
public:
SHAREDOBJECT(HiveInsert) ;
  HiveInsert();

  void setPartitions(SQLAssignItem_list_ptr partitions);

  // @Override
  SQLObject_ptr clone();

  SQLExprTableSource_ptr getTableSource();

  void setTableSource(SQLExprTableSource_ptr tableSource);

  void setTableSource(SQLName_ptr tableName);

  SQLSelect_ptr getQuery();

  void setQuery(SQLSelect_ptr query);

  SQLInsertStatement_ValuesClause_list_ptr getValuesList();

  void addValueCause(SQLInsertStatement_ValuesClause_ptr valueClause);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void accept0(HiveASTVisitor_ptr visitor);
};
